package review.Day_0330;

import java.util.Stack;

/**
 * @author zxc
 * @date 2023/03/30 22:39
 **/
public class Solution01 {
    // 思路 ：使用辅助栈，用来帮助 存储元素的主栈进行元素排序
    Stack<Integer> stack;
    Stack<Integer> temp;
    // 初始化主栈和辅助栈
    public Solution01() {
        stack = new Stack<>();
        temp = new Stack<>();
    }

    // 向主栈中加入元素 && 同时，对于该加入的元素进行排序;
    public void push(int val) {
        // 主栈为空的话，直接将元素加入即可;
        if(stack.isEmpty()){
            stack.push(val);
            return ;
        }
        // 主栈不为空 && 栈顶元素小于变量val
        while(!stack.isEmpty() && stack.peek() < val){
            temp.push(stack.pop());
        }
        stack.push(val);
        // 将暂时存储到 辅助栈temp中的所有元素移动到主栈中;
        while(!temp.isEmpty()){
            stack.push(temp.pop());
        }
    }

    // 主栈中，弹出栈顶元素（栈顶元素是当前主栈中最小元素）
    public void pop() {
        if(!stack.isEmpty()){
            stack.pop();
        }
    }

    // 获取主栈中的栈顶元素
    public int peek() {
        if(stack.isEmpty()){
            return -1;
        }
        return stack.peek();
    }

    // 判断主栈中是否为空
    public boolean isEmpty() {
        return stack.isEmpty();
    }
}
